﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using TDT_Project.classes;
using System.Web.Security;

namespace TDT_Project.Controller
{
    public partial class uc_user : System.Web.UI.UserControl
    {
        public int i = 1;
        private string pass_update = "";
        private DataSet ds_update = new DataSet();
        cls_config config = new cls_config();
        cls_user_dang_nhap u = new cls_user_dang_nhap();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Session.Clear();
                load_GiangVien();
                LayDS_Typenews();              
               
            }
        }

        private void LayDS_Typenews()
        {
            DataSet ds = u.TOAN_getall_user_login_web();
            if (ds.Tables[0].Rows.Count <= 10)
            {
                gvResult_TTT.AllowPaging = false;
            }
            else
            {
                gvResult_TTT.PageSize = 10;
                gvResult_TTT.AllowPaging = true;
            }
            gvResult_TTT.DataSource = ds;
            gvResult_TTT.DataBind();
        }

        private void Check_news(int id)
        {
            ds_update = u.TOAN_getall_user_login_web_ID(id);
            if (ds_update != null && ds_update.Tables[0].Rows.Count > 0)
            {
                ddlgiaovien.SelectedValue = ds_update.Tables[0].Rows[0]["GiaoVienID"].ToString();
               // txtma_user.Text = ds_update.Tables[0].Rows[0]["IDLogin"].ToString();
                txtuser.Text = ds_update.Tables[0].Rows[0]["Username"].ToString();
                if (ds_update.Tables[0].Rows[0]["pass"].ToString() != "")
                {
                    txtmatkhau.Text = ds_update.Tables[0].Rows[0]["pass"].ToString();
                }
                if (ds_update.Tables[0].Rows[0]["BiVoHieu"].ToString().Equals("1") == true)
                {
                    chklogin.Checked = true;
                }
                else
                {
                    chklogin.Checked = false;
                }
            }
            else
            {
                //Page.ClientScript.RegisterStartupScript(this.GetType(), "Lưu ý", "<script>alert('Tin này không tồn tại, Vui lòng thử lại!'); window.location.href='QuantriBaiViet.aspx'</script>");
            }
        }
        private void load_GiangVien()
        {
            DataSet ds = u.Get_Thong_Tin_Giao_Vien_Toan_123();
            if (ds != null && ds.Tables[0].Rows.Count > 0)
            {
                ddlgiaovien.DataSource = ds;
                ddlgiaovien.DataTextField = "TenGiaoVien";
                ddlgiaovien.DataValueField = "GiaoVien_ID";
                ddlgiaovien.DataBind();
            }
            else
            {
                ddlgiaovien.SelectedIndex = -1;
            }
        }

        protected void gvResult_TTT_PageIndexChanged(object sender, Telerik.Web.UI.GridPageChangedEventArgs e)
        {
            gvResult_TTT.CurrentPageIndex = e.NewPageIndex;
            i += gvResult_TTT.PageSize * gvResult_TTT.CurrentPageIndex;
            LayDS_Typenews();
        }

        protected void gvResult_TTT_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
        {
            if (e.Item.ItemIndex < 0)
            {
                return;
            }
        }

        protected void btnThemmoi_Click(object sender, EventArgs e)
        {
            txtma_user.Text = "";
            txtuser.Text = "";
            txtmatkhau.Text = "";
            txtxacnhan_mk.Text = "";
            chklogin.Checked = true;
            lbMessage.Text = "";
        }
        public static byte[] encryptData(string pass)
        {
            System.Security.Cryptography.MD5CryptoServiceProvider md5Hasher = new System.Security.Cryptography.MD5CryptoServiceProvider();
            byte[] hashedBytes;
            System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();
            hashedBytes = md5Hasher.ComputeHash(encoder.GetBytes(pass));
            return hashedBytes;
        }

        protected void btnGhi_Click(object sender, EventArgs e)
        {
            if (!txtma_user.Text.Equals(""))
            {
                if (txtuser.Text.Trim().Length == 0)
                {
                    lbMessage.Text = "Vui lòng nhập tên đăng nhập";
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "ResetMassage", "ResetMassage(5000,'" + lbMessage.ClientID + "');", true);
                    return;
                }
                if (txtuser.Text.Trim().Length >6)
                {
                    lbMessage.Text = "Tên đăng nhập không được quá 6 ký tự";
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "ResetMassage", "ResetMassage(5000,'" + lbMessage.ClientID + "');", true);
                    return;
                }
                if (txtmatkhau.Text.Trim().Length == 0)
                {
                    lbMessage.Text = "Vui lòng nhập mật khẩu";
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "ResetMassage", "ResetMassage(5000,'" + lbMessage.ClientID + "');", true);
                    return;
                }
                if (txtmatkhau.Text.Trim().Length>6)
                {
                    lbMessage.Text = "Mật khẩu khổng vượt quá 6 ký tự";
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "ResetMassage", "ResetMassage(5000,'" + lbMessage.ClientID + "');", true);
                    return;
                }
                if (txtxacnhan_mk.Text.Trim().Length == 0)
                {
                    lbMessage.Text = "Vui lòng nhập xác nhận mật khẩu";
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "ResetMassage", "ResetMassage(5000,'" + lbMessage.ClientID + "');", true);
                    return;
                }
                if (txtxacnhan_mk.Text.Trim() != txtmatkhau.Text.Trim())
                {
                    lbMessage.Text = "Xác nhận mật khẩu không trùng với mật khẩu";
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "ResetMassage", "ResetMassage(5000,'" + lbMessage.ClientID + "');", true);
                    return;
                }
                string GiaoVienID = ddlgiaovien.SelectedValue;                
                string Username =cls_dungchung.KillChars(txtuser.Text.Trim());
                string pass = BitConverter.ToString(encryptData(txtmatkhau.Text)).Replace("-", "").ToLower();
                u.ID_Login = int.Parse(txtma_user.Text);               
                u.GiaoVienID = GiaoVienID.ToString();
                u.Username = Username.ToString();
                u.pass = pass.ToString();
                u.LoaiNguoiDung_ID = 0;
                u.spid = 0;
                if (chklogin.Checked == true)
                {
                    u.BiVoHieu = 1;
                }
                else
                {
                    u.BiVoHieu = 0;
                }
                if (txtuser.Text == "admin")
                {
                    u.BiVoHieu = 1;
                    u.LoaiNguoiDung_ID = 1;
                    u.Username = "admin";
                }
                bool flag = u.TOAN_Update_user_login_web_Toan();
                if (flag)
                {
                    lbMessage.Text = "Cập nhật thành công";
                    txtuser.Text = "";
                    txtma_user.Text = "";
                    LayDS_Typenews();
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "ResetMassage", "ResetMassage(5000,'" + lbMessage.ClientID + "');", true);
                   
                }
                else
                {
                    //lbMessage.Text = "Lỗi không cập nhật được dữ liệu";
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "script", "alert('Lỗi không cập nhật được dữ liệu');", true);
                }
            }
            else
            {
                if (txtuser.Text.Trim().Length == 0)
                {
                    lbMessage.Text = "Vui lòng nhập tên đăng nhập";
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "ResetMassage", "ResetMassage(5000,'" + lbMessage.ClientID + "');", true);
                    return;
                }
                if (txtuser.Text.Trim().Length > 6)
                {
                    lbMessage.Text = "Tên đăng nhập không được quá 6 ký tự";
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "ResetMassage", "ResetMassage(5000,'" + lbMessage.ClientID + "');", true);
                    return;
                }
                if (txtmatkhau.Text.Trim().Length == 0)
                {
                    lbMessage.Text = "Vui lòng nhập mật khẩu";
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "ResetMassage", "ResetMassage(5000,'" + lbMessage.ClientID + "');", true);
                    return;
                }
                if (txtmatkhau.Text.Trim().Length > 6)
                {
                    lbMessage.Text = "Mật khẩu khổng vượt quá 6 ký tự";
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "ResetMassage", "ResetMassage(5000,'" + lbMessage.ClientID + "');", true);
                    return;
                }
                if (txtxacnhan_mk.Text.Trim().Length == 0)
                {
                    lbMessage.Text = "Vui lòng nhập xác nhận mật khẩu";
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "ResetMassage", "ResetMassage(5000,'" + lbMessage.ClientID + "');", true);
                    return;
                }
                if (txtxacnhan_mk.Text.Trim() != txtmatkhau.Text.Trim())
                {
                    lbMessage.Text = "Xác nhận mật khẩu không trùng với mật khẩu";
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "ResetMassage", "ResetMassage(5000,'" + lbMessage.ClientID + "');", true);
                    return;
                }
                string GiaoVienID = ddlgiaovien.SelectedValue;
                //u.ID_Login = Convert.ToInt32(txtma_user.Text);
                string Username = cls_dungchung.KillChars(txtuser.Text.Trim());
                string pass = BitConverter.ToString(encryptData(txtmatkhau.Text)).Replace("-", "").ToLower();                
                u.GiaoVienID = GiaoVienID.ToString();
                u.Username = Username.ToString();
                u.pass = pass.ToString();             
                u.LoaiNguoiDung_ID = 0;
                u.spid = 0;
                if (chklogin.Checked == true)
                {
                    u.BiVoHieu = 1;
                }
                else
                {
                    u.BiVoHieu = 0;
                }               
                DataSet ds_check = u.TOAN_Check(ddlgiaovien.SelectedValue, txtuser.Text);
                if (ds_check != null && ds_check.Tables[0].Rows.Count > 0)
                {
                    lbMessage.Text = "Tên đăng nhập này đã tồn tại.";
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "ResetMassage", "ResetMassage(5000,'" + lbMessage.ClientID + "');", true);
                }
                bool flag = u.Toan_Insert_user_login_web();
                if (flag)
                {
                    lbMessage.Text = "Thêm mới thành công";
                    txtuser.Text = "";
                    txtma_user.Text = "";
                    LayDS_Typenews();
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "ResetMassage", "ResetMassage(5000,'" + lbMessage.ClientID + "');", true);
                   
                }
                else
                {
                   // lbMessage.Text = "Lỗi không thêm mới được dữ liệu";
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "script", "alert('Lỗi không thêm mới được dữ liệu');", true);
                }
            }
        }

        protected void gvResult_TTT_SelectedCellChanged(object sender, EventArgs e)
        {

        }

        protected void gvResult_TTT_ItemCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
        {
            try
            {
                lbMessage.Text = "";
                string cmd = e.CommandName;
                int iRow = e.Item.ItemIndex;
                if (cmd == "EditItem")
                {
                    txtma_user.Text = gvResult_TTT.Items[iRow]["IDLogin"].Text;
                    txtuser.Text = gvResult_TTT.Items[iRow]["Username"].Text;
                    if (gvResult_TTT.Items[iRow]["Username"].Text == "admin")
                        txtuser.Enabled = false;
                    else
                        txtuser.Enabled = true;
                    txtmatkhau.Text = gvResult_TTT.Items[iRow]["Mk"].Text;
                    txtxacnhan_mk.Text = gvResult_TTT.Items[iRow]["Mk"].Text;
                    ddlgiaovien.SelectedValue = gvResult_TTT.Items[iRow]["GiaoVienID"].Text;
                    chklogin.Checked = gvResult_TTT.Items[iRow]["BiVoHieu"].Text == "Được đăng nhập" ? true : false;
                   
                }
                else
                {
                    int ID =Convert.ToInt32(gvResult_TTT.Items[iRow]["IDLogin"].Text);
                    bool i = u.TOAN_Delete_user_login_web(ID);
                    if (i == false)
                    {
                        ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "script", "alert('Xóa không thành công');", true);
                        return;
                    }
                    LayDS_Typenews();
                    lbMessage.Text = "Xóa thành công";
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "ResetMassage", "ResetMassage(5000,'" + lbMessage.ClientID + "');", true);
                    return;
                }
            }
            catch (Exception)
            {

                throw;
            }
        }

        protected void btn_tim_Click(object sender, EventArgs e)
        {
            txtma_user.Text = ""; 
            if (txtuser.Text.Trim().Length < 7)
            {
                DataSet ds = u.TOAN_getall_user_login_web_by_username(cls_dungchung.KillChars(txtuser.Text.Trim()));
                if (ds != null && ds.Tables[0].Rows.Count > 0)
                {
                    gvResult_TTT.DataSource = ds.Tables[0].DefaultView;
                    gvResult_TTT.DataBind();
                }
                else
                {
                    DataTable dt = new DataTable();
                    gvResult_TTT.DataSource = dt;
                    gvResult_TTT.DataBind();
                }
            }
        }


    }
}